package com.llb666.shop.items.domain.repository;

import com.llb666.shop.items.domain.entity.ItemsSpec;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.concurrent.CompletableFuture;

/**
 * 商品规格仓储层.
 *
 * @author llb666
 */
@RestController
public interface ItemsSpecRepository {
    /**
     * 查询商品规格信息.
     *
     * @param itemId 商品ID
     * @return 商品规格信息
     */
    List<ItemsSpec> queryItemsSpecById(String itemId);

    /**
     * 根据规格Id查询商品规格信息.
     *
     * @param itemSpecId 规格Id
     * @return 商品规格信息
     */
    ItemsSpec queryItemSpecById(String itemSpecId);

    /**
     * 扣减库存.
     *
     * @param itemSpecId 商品规格Id
     * @param buyCounts  订单数量
     */
    void decreaseItemSpecStock(String itemSpecId, int buyCounts);


    /**
     * 根据规格Id查询商品规格信息.
     *
     * @param itemSpecIdList 规格Id列表
     * @return 商品规格信息列表
     */
    CompletableFuture<List<ItemsSpec>> getItemSpecFutureByIds(List<String> itemSpecIdList);

    /**
     * 根据商品规格列表字符串查询商品规格信息列表.
     *
     * @param specList 商品规格列表字符串
     * @return 商品规格信息列表
     */
    List<ItemsSpec> getItemSpecByIds(String specList);
}
